import request from '@/utils/request';
import axios from 'axios';

/**
 * 上传文件的通用函数
 * @param {File} file - 要上传的文件对象
 * @param {String} uploadUrl - 上传接口的 URL
 * @param {Object} uploadHeaders - 自定义的请求头
 * @param {Function} onProgress - 上传进度的回调函数
 * @param {Function} onSuccess - 上传成功的回调函数
 * @param {Function} onError - 上传失败的回调函数
 */
export const uploadFile = (
  file,
  uploadUrl,
  uploadHeaders = {},
  onProgress,
  onSuccess,
  onError
) => {
  const formData = new FormData();

  // 将文件对象附加到 FormData 中
  formData.append('image', file);

  // 提取文件类型并附加到 FormData 中
  const fileType = file.type; // 获取文件的 MIME 类型
  formData.append('type', fileType); // 将类型作为额外的字段传递给后端

  // 确保返回 Promise
  return new Promise((resolve, reject) => {
    axios
      .post(uploadUrl, formData, {
        headers: {
          'Content-Type': 'multipart/form-data',
          ...uploadHeaders,
        },
        onUploadProgress: (event) => {
          if (event.lengthComputable) {
            const progress = (event.loaded / event.total) * 100;
            if (typeof onProgress === 'function') {
              onProgress({ percent: progress.toFixed(2) });
            }
          } else {
          }
        },
      })
      .then((response) => {
        if (typeof onSuccess === 'function') {
          onSuccess(response.data); // 调用成功回调
        }
        resolve(response.data); // 确保返回成功响应数据
      })
      .catch((error) => {
        if (typeof onError === 'function') {
          onError(error);
        }
        reject(error); // 处理错误并返回
      });
  });
};

// 营销图库/资源下载顶部分类筛选
// type:1.营销图库 2.资源下载 接口一样
export const getCategoryList = (data) => {
  return request({
    url: '/dev-api/api/ResourceCategory/list',
    method: 'post',
    data,
  });
};
// 营销图表格列表数据
export const getMarketingList = (data) => {
  return request({
    url: '/dev-api/api/MarketingGallery/list',
    method: 'post',
    data,
  });
};
// 资源下载表格列表数据
export const getManagerResource = (data) => {
  return request({
    url: '/dev-api/api/ManagerResource/list',
    method: 'post',
    data,
  });
};

// 营销图弹窗信息获取
export const getMarketingInfo = (data) => {
  return request({
    url: '/dev-api/api/MarketingGallery/info',
    method: 'post',
    data,
  });
};
// 营销图编辑保存
export const saveMarketingGallery = (data) => {
  return request({
    url: '/dev-api/api/MarketingGallery/save',
    method: 'post',
    data,
  });
};
// 营销图/资源下载-下载次数保存
export const addDownloadNum = (data) => {
  return request({
    url: '/dev-api/api/index/addDownloadNum',
    method: 'post',
    data,
  });
};
// 营销图/资源下载-详情
export const managerResourceInfo = (data) => {
  return request({
    url: '/dev-api/api/ManagerResource/info',
    method: 'post',
    data,
  });
};
